package zhongbo.java.air.flightpath.config;


import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.Topic;
import zhongbo.java.air.flightpath.listener.RedisSubscribeLogChannelListener;

//@Configuration
//@Slf4j
//public class RedisListenerConfig {
//    public static String LOG_CHANEL = "log_chanel";
//
//
//    public void configListener(RedisMessageListenerContainer listenerContainer,
//                               RedisSubscribeLogChannelListener logChanelListener) {
//        log.info("配置redis监听器");
//        Topic logTopic = new PatternTopic("log_chanel" );
//        listenerContainer.addMessageListener(logChanelListener, logTopic);
//    }
//
//}
@Configuration
@Slf4j
public class RedisListenerConfig { // 将订阅者(Listener)注册到Redis消息监听容器中
    public static String LOG_CHANGE = "log_chanel"; // 此公共常量是频道名

    public static String INJEST_FLIGHT_PATH = "injest_flight_path_tujiapeng";

    /**
     * 配置redis 监听器，添加logChannelListener监听器到容器里，同时指定channel名称为log_chanel
     *
     * @param listenerContainer Redis消息监听容器
     * @param logChannelListener Redis消息监听器
     */
    @Autowired
    public void configListener(RedisMessageListenerContainer listenerContainer, // 管理Redis订阅机制，该容器负责监听Redis频道并分发消息给注册的监听器。
                               RedisSubscribeLogChannelListener logChannelListener) { // 将自定义的RedisSubscribeLogChanelListener添加到监听容器中，使其能够处理来自Redis频道的消息。
        log.info("配置redis监听器");
        Topic logTopic = new PatternTopic(INJEST_FLIGHT_PATH);
        listenerContainer.addMessageListener(logChannelListener, logTopic); // 将监听器与频道绑定，当该频道有消息时，会触发监听器的onMessage()方法。
    }
}